home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / comm / cnet / compulist21.lha / Compulist / BBS.rx < prev    next >
Text File  |  1999-01-15  |  16KB  |  237 lines

  1. /*************************************************************\
  2.     $VER: Compulist, v2.1  (15-Jan-99)  by Carlos A. Roldan
  3.    (c)1996 - 1999  Carlos A. Roldan.  Aguadilla, Puerto Rico
  4. \*************************************************************/
  5.  
  6. /* THIS AREXX SCRIPT MAY NOT BE MODIFIED IN ANY WAY! */
  7.  
  8. START:;vr="Compulist v2.1";options results;arg a;vr2=right(vr,3)
  9. signal on SYNTAX;signal on ERROR;signal on IOERR
  10. gu=getuser;gu 1311992;t1=result
  11. if ~show('l','rexxsupport.library') then if ~addlib('rexxsupport.library',0,-30,0) then exit
  12. bf=bufferflush;gt=getchar;tr=transmit;se=sendstring;fn=Filenote;sl=SYSOPLOG;cw=changewhere
  13. ls=loadscratch;ss=savescratch;pu=putuser;so=setobject;sp=setprotocol;N=""
  14. dat1=t1"Config.dat";ak=addkeys;s=79;anim=t1"Wait.rexx"
  15. SE1="f1n1z1cb # z0 z1?z0 z1BBS Name:              z0 z1Stz0 z1Phone Number: z0 z1Baud: z0 z1Comment:                z0"
  16. call CONFIG;ads=t1"Ads";if ~exists(ads) then tr "$ makedir "ads"}"
  17. t2=t1'BBSLIST';arc1=t2'.LHA';arc2=t2'.ZIP';arc3=t2'.LZX';p2=t1"List.dat";gu 40;acc=result;gu 17;maint=result
  18. f1='T:BBLIST.TXT';f2="T:Compulist";dat=t1'Count.dat';gu 1;user=result;gu 1100460;term=result;gu 23;pt=result
  19. gu 2307050;bbs=result;gu 2307128;ph=result;ph1=left(ph,3);ph2=substr(ph,5,3);ph3=substr(ph,9,4)
  20. gu 2307076;sy=result;gu 47;local=result=-1;gu 12;cd=result;ln=COPIES("Í",s);ln2=COPIES("Í",31)
  21. wa=N"cfPlease wait...";gu 15;syso=result;if a="EVENT" then signal ARC
  22. if term="0" then do;tr 'f1b1cfn9'center(ln2,s);tr 'c9'center("This program requires",s)
  23. tr center("simple or full",s);tr center("ANSI support to run!",s);tr 'cf'center(ln2,s)
  24. tr "n5"center("*- Hit Any Key -*",s)"g1";signal BYE;end;do forever
  25. band="c9   "copies("_",69)"n1  ("copies("_",69)")n1";sl "cbPort #"pt "Used "vr"q1";cw vr;old=result;bf
  26. ls user;getscratch 1100454;mor=result;so "0";pu 1100454;ss user
  27. call SETUP;call READCFG
  28. TOP:
  29. tr "f1>6cb____   ____   ____     ____   ____   __      __   _____   ______n1>5/ __/\ /   /\ /    \   / _ /\ / / /\ / /\    / /\ /  __/\ /_  __/\"
  30. tr ">4/ /\_\// / / // / / /\ / __/ // / / // /_/   / / //__  /\/ \/ /\_\/n1   /___7\ /___/ //_/_/_/ //_/\_\//___/ //____7\ /_/ //____/ /  /_/ /"
  31. tr "   \___\/ \___\/ \_\_\_\/ \_\/   \___\/ \____\/ \_\/ \____\/   \_\/cf v"vr2""N"c9n1"band
  32. tr ""band
  33. call OPT
  34. COM:;se "cfWhat is your command v1}? [Enter o1Qo0 to Quit]: q1"
  35. inp=ANS("ABDEKV?/QR*")
  36. if inp="A" then signal ADD;if inp="D" then signal DNL;if inp="K" then do;call SEE;signal ASKDEL;end
  37. if inp="V" then do;call SEE2;signal VAD;end;if inp="*" then signal PRT;if inp="E" then do;save=0;call see;signal EDIT;end
  38. if inp="B" then do;call SEE;signal lp2;end;if inp="?"|inp="/" then signal INF;if inp="Q" then signal BYE
  39. if inp="R" then do;tr "";end;signal TOP
  40. ADD:;call clear;if count=999 then do;tr 'f1b1cfn9'center("Max Entries Has Already Been Reached!",s)
  41. call PAS;signal TOP;end;tr wa;R="";call clear;tr ""N"BBS NameState   Baud"
  42. tr ".-----------------------.  .--.  .------.|"R""COPIES(" ",23)N"|  |"R"  "N"|  |"R"      "N"|"
  43. tr "`-----------------------'  `--'  `------'";tr "Code     Number      Comment"
  44. tr ".-----.  .--------.  .------------------------."
  45. tr "|"R"(   )"N"|  |"R"   -    "N"|  |"R""COPIES(" ",24)N"|"
  46. tr "`-----'  `--------'  `------------------------'"
  47. BBS:;tr ""
  48. se ""R"I4624 23}";gu 70;name=result;call GRA;tr R"cf"name
  49. se ""R"I20993 2}";gu 70;state=result;call GRA;tr R"cf"state
  50. se ""R"I20993 6}";gu 70;baud=result;call GRA;tr R"cf"baud
  51. se ""R"I20544 3}";gu 70;code=result;call GRA;tr R"cf"code
  52. se ""R"I20544 3}";gu 70;pn1=result;call GRA;tr R"cf"pn1
  53. se ""R"I20544 4}";gu 70;pn2=result;call GRA;tr R"cf"pn2
  54. CO11:;se ""R"I4608 24}";gu 70;comment=result;call GRA;tr R"cf"comment
  55. se ""N"c9Is The Above Info Correct cf(cbYescf/cbNocf/cbAbortcf)? q1"
  56. inp=ANS("YNA");if inp="Y" then do
  57. se "cfWould you like to upload a BBS ad for the above entry? q1";bbsad=0
  58. inp=ANS("YN");if inp="N" then do;col="";call chekad;adss=ads"/"bbsad;tr "#5copy from "t1"NoAd to "adss"}";end
  59. if inp="Y" then do;col="*";call chekad;tr"f1n1c9Upload ad for :cf "name"n2"
  60. tr "    cbÕ͸   Õ͸ÕÍÍÍÍÍ͸ÕÍÍÍÍÍ͸ÕÍÍÍ͸Õ͸ÕÍÍ͸ÕÍÍÍ͸Õ͸ÕÍÍÍÍÍ͸"
  61. tr "    ³ ³   ³ ³³ ÕÍ͸ ³³ ÕÍ͸ ³³ Õ¸ ³³ ³Ô¸ Õ¾³ Õ¸ ³³ ³³ ÕÍÍÍ;"
  62. tr "    ³ ³Õ͸³ ³³ ÔÍ; ³³ ÔÍ; ³³ ³³ ³³ ³ ³ ³ ³ ³³ ³³ ³³ ³ ÕÍ͸"
  63. tr "c9.---cb³ ³³ ³³ ³³ ÕÍ͸ ³³ Õ͸ Õ¾³ ³³ ³³ ³ ³ ³ ³ ³³ ³³ ³³ ³ Ô¸ ³c9---."
  64. tr "|   cb³ Ô¾ Ô¾ ³³ ³  ³ ³³ ³ ³ Ô¸³ ³³ Ô¾ ³Õ¾ Ô¸³ ³³ Ô¾ ³³ ÔÍ; ³   c9|"
  65. tr "|   cbÔÍÍÍÍÍÍ;Ô;  Ô;Ô; ÔÍ;Ô;ÔÍÍÍ;ÔÍÍ;Ô;ÔÍÍÍ;ÔÍÍÍÍÍ;   c9|"
  66. tr "|--------------------------------------------------------------|"
  67. tr "|cfYou have chosen the option to upload an ad for the BBS you arec9|"
  68. tr "|cfadding to the complulist.  Please upload an  ad  that  is  notc9|"
  69. tr "|cfbigger that 80x22.  If the ad you are about to upload does notc9|"
  70. tr "|cfmeet this requirement, just hit [A]bort and the  BBS  will  bec9|"
  71. tr "|cfadded without an ad.  Also, ads can  only  be  uploaded  usingc9|"
  72. tr "|cfXMODEM protocol so the system can properly match the ad to thec9|"
  73. tr "|cfdata for the BBS you entered.                       Thank You!c9|"
  74. tr "`--------------------------------------------------------------'q1"
  75. bf
  76. adss=ads"/"bbsad;if local then do;se"n1c9Enter complete path/filename for ad: I0 }";gu 70;ad=result
  77. tr "n1c9Transfering file...q1$ Copy from "ad" to "adss"}";end
  78. else do;SETMINFREE 9000;sp "X";XUP adss;end;end;if ~exists(adss) then col=""
  79. call WRI;sl "cfAdded: cc"name"q1";tr ""N"c9s1Saving...q1"
  80. SAVL:;call open(file,p2,"A");call writeln(file,name'|'state'|'code'|'pn1'|'pn2'|'baud'|'comment'|'col'|'acc'|'bbsad)
  81. call close(file);call COUNT;ncount=count+1;call SAVECFG;call SETUP;signal TOP;end 
  82. if inp="N" then do;tr wa;signal DEL;end;if inp="A" then signal RUT
  83. SEE:
  84. tr SE1;tr "c9"ln""ln;se "";do x=1 to bbsnum
  85. se "cf"left(x,3)"o1c9 "left(col.x,1)"o0 ca"left(na.x,23) "cb"left(st.x,2) "cd("left(ph1.x,3)")" left(ph2.x,3)"-"left(ph3.x,4) "cc"left(ba.x,6) "ce"left(com.x,24)
  86. if index(x/15,".")=0 then do;se "cfContinue? (cbYcf/n):q1 ";gt
  87. if upper(result)="N" | result="###PANIC" then do;leave x;end
  88. tr "";do line=4 to 18;tr ""line";0f";tr "";end;end;end;return
  89. SEE2:
  90. tr SE1
  91. tr "c9"ln""ln;se "";do x=1 to bbsnum;if col.x="*" then do
  92. se "cf"left(x,3)"o1c9 "left(col.x,1)"o0 ca"left(na.x,23) "cb"left(st.x,2) "cd("left(ph1.x,3)")" left(ph2.x,3)"-"left(ph3.x,4) "cc"left(ba.x,6) "ce"left(com.x,24)
  93. if index(x/15,".")=0 then do;se "cfContinue? (cbYcf/n):q1 ";gt
  94. if upper(result)="N" | result="###PANIC" then do;leave x;end
  95. tr "";do line=4 to 18;tr ""line";0f";tr "";end;end;end;end;return
  96. DNL:;tr wa;call clear
  97. tr "cf  D O W N L O A D "N"c9[cb1c9]cb Lha version"
  98. tr "c9[cb2c9]cb Lzx versionc9[cb3c9]cb Zip versionc9[cbRc9]cbeturn To Previous Menuq1"
  99. se "cfWhich version v1}? ";inp=ANS("123R");if inp="R" then signal RUT
  100. if inp="1" then file1=arc1;if inp="2" then file1=arc3;if inp="3" then file1=arc2
  101. if ~exists(file1) then do;tr "f1n3c9 ("right(file1,11)") Has Not Been Created!n2 q1";signal lp2;end
  102. else do;tr "f1b1";Selectfile file1
  103. tr "n1c9Note: cf This list may contain previously selected files!n1& DS}";end;signal TOP
  104. INF:;se wa;call clear
  105. se 'cf'center(ln2,s)'c9'center("Written In ARexx By:",s)
  106. se ''center("Carlos A. Roldan",s)''center("6975 Parkwood",s)
  107. se ''center("Detroit, Michigan 48210",s)''center("E-mail: croldan@visitus.net",s)
  108. se 'cf'center(ln2,s)'cd'center("Running On: "bbs,s)
  109. se ''center("System Operator: "sy,s)''
  110. call PAS;signal RUT
  111. PAS:se '';if exists(anim) then do;se '#0'anim'}';end
  112. else do;se 'q1k1ÄÄÄÄÄÄÄÄq1 cfHit Any Keyq1 k1ÄÄÄÄÄÄÄÄq1g1';end;return
  113. WRI:if ~exists(p2) then do;call open(file,p2,'w');call writeln(file,bbs"|"p.2"|"ph1"|"ph2"|"ph3"|"p.3"|"p.4"||1|0")
  114. call close(file);tr "#5copy from "t1"NoAd to "ads"/0}";end;return
  115. DEL:;tr ""R""COPIES(" ",23)"        "
  116. tr "          "COPIES(" ",24)N;signal BBS
  117. RUT:tr wa;call OPT;signal COM
  118. GRA:;if result="" then do;tr "b1z0s1cfBlank input not allowed!w1q1";signal RUT;end;return
  119. OPT:;call clear
  120. tr "c9[cbAc9]cbdd To Listc9[cbBc9]cbrowse Listc9[cbDc9]cbownload Listc9[cbEc9]cbdit An Entry"
  121. tr "c9[cbKc9]cbill An Entry"
  122. tr "c9[cbVc9]cbiew BBS Ad"
  123. tr "c9[cb*c9]cb Print List"
  124. tr "c9[cb?c9]cb About";return
  125. ARC:;call SETUP;sl 'c9'vr' Event Started.';tr 'f1n5'center(vr" System Event",s);cw vr' Event'
  126. tr 'cf'center("Sorting List...",s)'q1$ QSort from 'p2' to 'f1'}$ Copy from 'f1' to 'p2'}$ Delete 'f1'}'
  127. if exists(arc1) then tr '$ Delete 't2'.#?}'
  128. if exists(p2) then do;call open(f1,f1,"W");do x=1 to bbsnum
  129. na.x=left(na.x,23);st.x=left(st.x,2);ph1.x=left(ph1.x,3);ph2.x=left(ph2.x,3);ph3.x=left(ph3.x,4);ba.x=left(ba.x,6);com.x=substr(com.x,1)
  130. call writeln(f1,na.x st.x "("ph1.x")" ph2.x"-"ph3.x ba.x com.x);end x;call close(f1)
  131. tr '$ Join 't1'Ban1 'f1 t1'Ban2 to 'f2'}'
  132. call open(file,f2,"A");call writeln(file,vr' By: Carlos A. Roldan [caroldan@hotmail.com]');call writeln(file,'Number Of Systems Listed: 'bbsnum);call writeln(file,'Updated: 'cd);call close(file)
  133. tr '$ 'fn f2' "Created by 'vr' - Updated: 'cd'"}'
  134. tr 'cf'center("Creating "arc1,s)'w5$ lha -r -e -x -2 -q a 'arc1 f2'}w5$ 'fn arc1' "Lha Version Of 'vr' - Updated: 'cd'"}'
  135. tr ''center("Creating "arc3,s)'$ lzx -m -x -a -3 -q a 'arc3 f2'}w5$ 'fn arc3' "Lzx Version Of 'vr' - Updated: 'cd'"}'
  136. tr ''center("Creating "arc2,s)'$ zip -q 'arc2 f2'}w5$ 'fn arc2' "Zip Version Of 'vr' - Updated: 'cd'"}'
  137. tr '$ Delete 'f1 f2'}';end;sl 'c9'vr' Event Ended.';bf;exit
  138. ASKDEL:
  139. se "cfNumber of Item to Delete: (0=Abort) I4160 3}q1";gu 70;ed=result
  140. if ed=""|ed="0"|ed>bbsnum then signal TOP;if ed>0 & ed~>bbsnum then do;bb1=bbsad.ed;nbbs=na.ed
  141. bb2=ads"/"bb1
  142. if acc.ed ~=acc & maint ~=0 then signal ASKDEL2
  143. if acc.ed ~=acc then do;tr "cfb1s1You may only kill your own entries!w2q1";signal askdel;end
  144. ASKDEL2:
  145. se "f1n1cfDeletecfc9 "nbbs" cf(cbyescf/cbNocf)?: q1";gt;an=upper(result)
  146. if an~="Y" then do;tr "c2No!c3";signal TOP;end;tr "c2Deleting, please wait...c3"
  147. call COUNT;ncount=count-1;call SAVECFG;call KILL
  148. end;if exists(bb2) then tr "$ Delete "bb2"}";sl "cfDeleted: cc"nbbs"q1"
  149. tr "f1n9cf"center("Item Deleted",s)"n1q1";signal lp2
  150. VAD:
  151. se "cfView ad for which BBS? (0=Abort) I4160 3}q1";gu 70;del=result
  152. if del=""|del="0"|del>bbsnum then signal TOP;if del>0 & del~>bbsnum then do;na=na.del;bb1=bbsad.del
  153. tx="f1n9cfb1"center("Ad For",s)"n2c9"center(na,s)"cfn2"center("Not Available!",s);end
  154. if bbsad.del="" then do;tr tx;signal lp2;end
  155. bb2=ads"/"bbsad.del;if ~exists(bb2) then do;tr tx;signal lp2;end
  156. tr "b1f1*4"bb2"}"
  157. lp2:call PAS;signal TOP
  158. BYE:;call MOR;bf;EXIT
  159. MOR:ls user;so mor;pu 1100454;ss user;tr "q1";cw old;return
  160. ANS:;arg PosAns;bf;do until pos(char,posans)~=0;gt;Char=upper(result);if Char='###PANIC' then exit;end;return Char
  161. PRT:;if ~Local then do;se "cfSorry, you have no access to that command.w2";signal com;end
  162. dev="prt:";if p.1="Y" then ff=d2c(12);else ff=""
  163. if exists(arc1) then do
  164. tr 'cf'center("Printing...",s)'q1#5copy 't1'Ban1 to prt:}';do x=1 to bbsnum
  165. call open(f,dev)
  166. call writeln(f,left(na.x,23) left(st.x,2) "("left(ph1.x,3)")" left(ph2.x,3)"-"left(ph3.x,4) left(ba.x,6) left(com.x,24))
  167. end;call close(f);tr '#5copy 't1'ban2 to prt:}'
  168. call open(f,dev)
  169. call writeln(f,vr" By: Carlos A. Roldan [caroldan@hotmail.com]");call writeln(f,"Number Of Systems Listed: "bbsnum)
  170. call writeln(f,"Printed At: "bbs "On: "cd);call writeln(f,ff);call close(f);end
  171. else do;tr 'f1b1c9'arc1' Not Found!';signal lp2;end;signal COM
  172. SETUP:;call WRI
  173. tr 'f1cf'center("Reading data file, please wait...",s)'q1'
  174. call open(bbsl,p2,'R');do x=1 until EOF(bbsl);h.x=readln(bbsl)
  175. parse var h.x na.x'|'st.x'|'ph1.x'|'ph2.x'|'ph3.x'|'ba.x'|'com.x'|'col.x'|'acc.x'|'bbsad.x
  176. se 'c9.';end x;tr 'q1';call close(bbsl);bbsnum=x-1;return
  177. SAVECFG:;call open(f1,dat,'w');call writeln(f1,ncount);call close(f1)
  178. CONFIG:;call open(f1,dat1,'R');do x=1 to 4;p.x=readln(f1);end;call close(f1);return
  179. READCFG:;if ~exists(dat) then do
  180. call open(f1,dat,'w');call writeln(f1,bbsnum);call close(f1);signal READCFG;end
  181. COUNT:;call open(f1,dat,'R');a=readln(f1);Count=word(a,1);call close(f1);return
  182. EDIT:
  183. se "cfNumber Of Item To Edit: (0=Abort) I4160 3}q1";gu 70;ed=result
  184. if ed=""|ed="0"|ed>bbsnum then signal TOP;if ed>0 & ed~>bbsnum then nbbs=na.ed
  185. if acc.ed ~=acc & maint ~=0 then signal EDIT2
  186. if acc.ed ~=acc then do;tr "cfb1s1You may only edit your own entries!w2q1";signal edit;end
  187. EDIT2:tr 'z0f1z1cb  Edit BBS Entry  z0n1'
  188. tr 'c9[cb1c9]cf B B S    N A M E c9: z1cb'left(na.ed,23)'z0';name=na.ed
  189. tr 'c9[cb2c9]cf    S T A T E     c9: z1cb'left(st.ed,2)'z0';state=st.ed
  190. tr 'c9[cb3c9]cf    P H O N E     c9: cf(z1cb'left(ph1.ed,3)'z0cf) z1cb'left(ph2.ed,3)'z0cf-z1cb'left(ph3.ed,4)'z0'
  191. code=ph1.ed;pn1=ph2.ed;pn2=ph3.ed
  192. tr 'c9[cb4c9]cf B A U D  R A T E c9: z1cb'left(ba.ed,6)'z0';baud=ba.ed
  193. tr 'c9[cb5c9]cf  C O M M E N T   c9: z1cb'left(com.ed,24)'z0';comment=com.ed
  194. bbsad=bbsad.ed;col=col.ed;tr 'n1c9[cbQc9] cdEntry Is  Correctn1';save=0
  195. EDD:;se 'z0c6Selectionc9: cf';gt;a=index('12345Q',result)
  196. if a=0 then a=6;signal ('ED'a)
  197. ED1:tr 'BBS Name';ak (name);se 'z1cfi4112 23}';gu 70;a=result
  198. if a~='' then do;name=a;save=1;end;tr ''name;signal EDD
  199. ED2:tr 'State';ak (state);se 'z1cfi20481 2}';gu 70;a=result
  200. if a~='' then do;state=a;save=1;end;tr ''state;signal EDD
  201. ED3:oldphone=pn1""pn2;oldad=ads"/"oldphone
  202. tr 'Phone Number';ak (code);se 'z1cfi20544 3}';gu 70;a=result
  203. if a~='' then do;code=a;save=1;end;tr ''code
  204. ak (pn1);se 'z1cfi20544 3}';gu 70;a=result
  205. if a~='' then do;pn1=a;end;tr ''pn1;
  206. ak (pn2);se 'z1cfi20544 4}';gu 70;a=result
  207. if a~='' then do;pn2=a;end;tr ''pn2;
  208. newphone=pn1""pn2;newad=ads"/"newphone
  209. if exists(oldad) then tr "$ rename "oldad" "newad"}";signal EDD
  210. ED4:tr 'Baud Rate';ak (baud);se 'z1cfi20481 6}';gu 70;a=result
  211. if a~='' then do;baud=a;save=1;end;tr ''baud;signal EDD
  212. ED5:tr 'Comment';ak (comment);se 'z1cfi4096 24}';gu 70;a=result
  213. if a~='' then do;comment=a;save=1;end;tr ''comment;signal EDD
  214. ED6:;if save=0 then signal TOP;tr "f1"center("Please wait...",s)
  215. call COUNT;ncount=count-1;call SAVECFG;call KILL;signal SAVL
  216. KILL:;do x=ed to bbsnum-1;x2=x+1;na.x=na.x2;st.x=st.x2;ph1.x=ph1.x2;ph2.x=ph2.x2
  217. ph3.x=ph3.x2;ba.x=ba.x2;com.x=com.x2;col.x=col.x2;acc.x=acc.x2;bbsad.x=bbsad.x2;end;bbsnum=bbsnum-1
  218. call open(bbsl,p2,'W');do x=1 to bbsnum
  219. call writeln(bbsl,na.x'|'st.x'|'ph1.x'|'ph2.x'|'ph3.x'|'ba.x'|'com.x'|'col.x'|'acc.x'|'bbsad.x);se 'c9.';end
  220. call close(bbsl);return
  221. CLEAR:;
  222. tr "";do line=8 to 17;tr ""line";0f";end;return
  223. CHEKAD:
  224. adss=ads"/"bbsad
  225. if exists(adss) then do;signal addit;end;return
  226. if ~exists(adss) then do;bbsad=bbsad;end;return
  227. ADDIT:bbsad=bbsad+1;signal chekad
  228.  
  229. ERROR:;call MOR;logentry "Compulist ERROR Line: "||SIGL
  230. Tr "Program Error - Error in Line" SIGL;tr "Sysop Informed";exit
  231.  
  232. IOERR:;call MOR;logentry "Compulist IOERR Line: "||SIGL
  233. Tr "IO Error - Error in Line" SIGL;tr "Sysop Informed";exit
  234.  
  235. SYNTAX:;call MOR;logentry "Compulist ERROR Line: "||SIGL||" Code: "||RC
  236. Tr "Syntax Error - Error in Line" SIGL'  error code: ' RC;tr "Sysop Informed";exit
  237.